Files
akbasic/docs/images/breakout-lettering.png

3 lines
451 B
Plaintext
Raw Permalink Normal View History

Add two Breakout examples and the tutorials that build them Two complete games in `examples/breakout/`, both 100% BASIC: `characters/` draws its wall in the text grid with two `DATA` sprites for the ball and paddle, and `sprites/` loads CC0 artwork and captures its whole screen with `SSHAPE`/`SPRSAV`. They take opposite shapes for reasons that are entirely this interpreter's, which is what the chapters are for. `docs/17-tutorial-breakout.md` and `docs/18-tutorial-breakout-artwork.md` build each one a step at a time, and end in a checklist of the rules a real program runs into: create every name before the loop starts, write a text row whole, loop with `GOTO` rather than `DO`, put the float on the left. Every trap is a runnable block with its own output rather than a claim -- the value pool dying at four thousand names, the skipped `BEGIN` block that breaks its caller's `RETURN`, `SSHAPE` ignoring a subscript, `READ`'s single cursor. Five figures, generated from the listings beside them by `docs_screenshots`, and a `breakout_art` setup so the ones that load artwork load the example's own. The character game's wall cannot be photographed -- the screenshot host omits the text layer on purpose -- so it is shown as compared output instead. `docs/07-sound.md` never said `SOUND`'s frequency is a SID register value rather than hertz, which both games depend on. It says so now, with the conversion from `src/audio_tables.c:84`. `TODO.md` gains the thirteen defects the two games turned up -- §6 items 30 to 33 and all of §9 -- each with a reduction that fits on a screen, the file and line of the cause, and what a fix would touch. Verified: `docs_examples` passes in both build configurations, `docs_screenshots --check` re-renders all thirteen figures and byte-compares them, the full 109-test suite passes in both builds, every quoted fragment was checked to appear verbatim in the listing it came from, and every relative link and anchor resolves. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-01 22:54:42 -04:00
<EFBFBD>PNG

IHDRnNr<4E><72><01>IDATx<54><78><EFBFBD><EFBFBD>m<EFBFBD>0<14>Q<EFBFBD><51>Dl<44>J <0C>Jl<4A>L}<7D>mi<6D>;m<>{<7B><><C8B2><EFBFBD><EFBFBD>5<00><>x<EFBFBD><78><EFBFBD><EFBFBD>|<18><><EFBFBD><EFBFBD><EFBFBD>h=+<2B><>2^8<><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<1F>1w<31><0F><>2z.<2E><>-<2D><0F> b<><03> <20>!1@<40>B b<><03> <20>!1@<40>B b<><03> <20>!1@<40>b<>#b<>\<5C><>S<EFBFBD>4<EFBFBD>#<23><><1A> <0C>K<EFBFBD><4B><EFBFBD>\O]<5D>a<EFBFBD>-<2D>>ۀ{Gs<47><73>?<3F><><EFBFBD>U<EFBFBD><55>P<EFBFBD><50><EFBFBD>t<EFBFBD>LC9z<39>G b<><62>p<EFBFBD>$<24><><EFBFBD><EFBFBD><EFBFBD> <20>P<EFBFBD><50>pC <0C><><EFBFBD>;1@<40><>:<3A><>J <0C>!<21>!Z3Zkb<6B>Jb<>_<>1<>C<EFBFBD><1E>!n<>b`B<><1E>!<06>b<><62>j=<3D><01><><11>E<EFBFBD> y<>pQ{<7B>o<EFBFBD>;<3B>·<EFBFBD><CE87><EFBFBD>چ,<2C>P4<><34>ձ<EFBFBD><D5B1><06><>^؍<><1B>D`<60>><01>Cm<43><6D>!o<>IEND<4E>B`<60>